package org.itboys.mobile.service.mysql.web.pay;

import org.itboys.commons.ErrorException;
import org.itboys.commons.utils.tools.LongUtil;
import org.itboys.mobile.entity.mysql.pay.SundayPayConfig;
import org.itboys.mongodb.service.BaseMySqlService;
import org.itboys.param.PageResult;
import org.itboys.param.ParamUtil;
import org.springframework.stereotype.Service;

import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Map;

/**
 * 作者：jiangxiong
 * 日期：2017年5月8日
 * 联系方式 ：empty90911@126.com
 * 描述：圣代_支付_配置_service_web
 */
@Service
public class SundayPayConfigService extends BaseMySqlService<SundayPayConfig> {
    public static Integer pay_config_type_alipay=1;//支付宝
    public static Integer pay_config_type_wechat_open=2;//微信（开放平台，适用场景：APP）
    public static Integer pay_config_type_wechat_html=3;//微信（服务号/网页，适用场景：微商城）
    /**
     * 查找支付配置
     * @param request
     * @return
     */
    public PageResult<SundayPayConfig> selectConfig(HttpServletRequest request){
        Map<String,Object> param= ParamUtil.packageMongoExactParam(request,"type");
        return new PageResult<SundayPayConfig>(super.select(param),super.count(param));

    }
    /**
     * 新增支付配置  如果有则修改
     * @param config
     */
    public void saveConfig(SundayPayConfig config){
        if(config.getId()==0l){
            //有且只能有一个
            Map<String,Object> param = new HashMap<String,Object>();
            param.put("type",config.getType());
            if(LongUtil.isNotZreo(super.count(param))){
                throw new ErrorException("同类型支付配置，只能存在一个。");
            }
            super.insert(config);
        }else{
            //有且只能有一个
            Map<String,Object> param = new HashMap<String,Object>();
            param.put("type",config.getType());
            param.put("id",config.getId());
            if(LongUtil.isNotZreo(super.count(param))){
                throw new ErrorException("同类型支付配置，只能存在一个。");
            }
            super.update(config);

        }
    }

    /**
     * 查找支付配置
     * @param configId
     * @return
     */
    public SundayPayConfig findOne(Long configId, Integer type){
        SundayPayConfig config = null;
        if(LongUtil.isNotZreo(configId)){
            config=super.find(configId);

        }else{
            config = new SundayPayConfig();
            config.setId(configId);
            config.setType(type);
        }
        return config;
    }



}
